package com.small.site.service;

import com.small.site.pojo.SysUser;
import com.small.site.util.R;
import com.small.site.vo.PageVo;
import com.small.site.vo.req.UserOwnRoleReqVo;
import com.small.site.vo.req.UserOwnRoleRespVo;
import com.small.site.vo.req.UserPageReqVo;
import com.small.site.vo.req.UserReqVo;
import com.small.site.vo.req.UserUpdatePasswordReqVo;
import com.small.site.vo.resp.UserRespVo;

import java.util.List;

/**
 * @author xiaochi
 * @date 2021/12/14 15:13
 * @desc UserService
 */
@SuppressWarnings("all")
public interface UserService {

    /**
     * 根据用户名查询用户
     * @param username
     * @return
     */
    SysUser getUserByUserName(String username);

    /**
     * 分页查询用户接口
     * @param userPageReqVo
     * @return
     */
    PageVo<SysUser> pageInfo(UserPageReqVo userPageReqVo);

    /**
     * 新增用户接口
     * @param sysUser
     * @return
     */
    R<String> createUser(SysUser sysUser);

    /**
     * 查询用户拥有的角色数据接口
     * @param userId
     * @return
     */
    UserOwnRoleRespVo getUserOwnRole(String userId);

    /**
     * 保存用户拥有的角色信息接口
     * @param userOwnRoleReqVo
     */
    R<String> setUserOwnRole(UserOwnRoleReqVo userOwnRoleReqVo);

    /**
     * 重置用户密码接口
     * @param userId
     * @return
     */
    R<String> resetUpdatePassword(String userId);

    /**
     * 更新用户信息
     * @param userUpdateReqVo
     * @param userId
     * @return
     */
    R<String> updateUserInfo(UserReqVo userUpdateReqVo, String userId);

    /**
     * 批量/删除用户接口
     * @param list
     * @param userId 操作人
     * @return
     */
    R<String> deletedUsers(List<String> list, String userId);

    /**
     * 获取个人资料编辑信息
     * @param userId
     * @return
     */
    R<UserRespVo> detailInfo(String userId);

    /**
     * 保存个人信息接口
     * @param sysUser
     * @param userId
     * @return
     */
    R<String> userUpdateDetailInfo(SysUser sysUser, String userId);

    /**
     * 修改个人密码
     * @param userUpdatePasswordReqVo
     * @param userId
     * @return
     */
    R<String> userUpdatePassword(UserUpdatePasswordReqVo userUpdatePasswordReqVo, String userId);
}
